package bch.maven.plugin.guava;

import com.google.common.collect.MinMaxPriorityQueue;
import java.util.Random;
import java.util.Comparator;

public class TopKExample {

    public static void main(String[] args) {
        int n = 100; // 模拟 1 亿数据
        int k = 10;        // Top 10
        Random rand = new Random();

        // 创建 MinMaxPriorityQueue，限制容量为 k
        MinMaxPriorityQueue<Integer> topKQueue = MinMaxPriorityQueue
                .maximumSize(k)
                .create();

        // 模拟大数据流
        for (int i = 0; i < n; i++) {
            topKQueue.add(i); // 超出容量自动丢弃最小值
        }

        // 输出 Top-K（从大到小排序）
        System.out.println("Top " + k + " 最大值：");
        topKQueue.stream()
                 .sorted(Comparator.reverseOrder())
                 .forEach(System.out::println);
    }
}
